package 面向对象;
/*
 代理模式:为其他对象设置一种代理以控制对这个对象访问
 代理模式是真实对象的代表，在访问对象时引入一定程度的间接性，
 因为这种间接性可以附加多种用途
*/
public class 静态代理模式
{
	public static void main(String[] args){
		Action useract=new UserAction();
		Action proxyact=new ProxyAction(useract);
		proxyact.doAction();
	}
}

interface Action{
	void doAction();
}

class ProxyAction implements Action{
	private Action act;
	public ProxyAction(Action act){
		this.act=act;
	}
	public void doAction(){
		long starttime=System.currentTimeMillis();//可以写一些控制等其他
		act.doAction();//执行真正的任务
		long endtime=System.currentTimeMillis();
		System.out.println("共耗时 "+(endtime-starttime)+ " 毫秒");
	}
}
class UserAction implements Action
{
    //如果想在doaction方法前后添加控制或其他操作可使用代理类
	@Override
	public void doAction()
	{
		for(int i=0;i<100;i++){
			System.out.println(i);
		}
		System.out.println("用户开始工作了====");
	}

	
}

